第3章 依存関係を管理する
第3章 依存関係を管理する
依存関係があるもの
他のクラスの名前
self以外のどこかに送ろうとしているメッセージ(メソッド?)の名前
メッセージ(メソッド)が要求する引数
それら引数の順番
依存関係の中には不必要なものもある
依存関係を管理し、それぞれのクラスが持つ依存を最低限にする
クラスは自身の責任を果たすために必要なことにだけ集中する
依存関係が強い場合、変更しにくく再利用もしにくい
疎結合なコードを書くには
クラスAで別クラスBのインスタンスを作成してメソッドを呼び出している場合
クラスの依存性が上がってしまう
クラスAはクラスBのメッセージ(メソッド)さえ知っていればいい
クラスBのクラス名を記載していると、変更・再利用しにくい
解決策:依存オブジェクトの注入
クラスAの初期化時にクラスBのインスタンスを渡してしまう
yana-gi.icon本に依存オブジェクトの注入って難しそうに見えるけど実は単純だって書いてあるけどそうは思えないよ〜
Qiitaの記事読んでみたらDIのメリットより理解できた
クラスA内で他のクラスBのインスタンスを呼び出していると、単体テストができない(単体ではなく結合になってしまう)
そのためクラスAのインスタンス作成時にクラスBのインスタンスを渡してしまう